
The MetaKit Library                 Version 1.4                 November, 1996
==============================================================================
(see the file README.TXT for general information about this C++ class library)


Notes about version 1.4 (1996,11,1,140) :

NEW FEATURES

- The major enhancements in this version are that it can now determine format
  strings by itself (no more need for #define FORMAT's), and that substantial
  performance improvements have been achieved.
- The automatic structure determination is activated by storing views using
	storage.Store("name", view);
  Views which are stored may need to be structurally adapted, so you can use
	view = storage.Store("name", view);
  to make sure your view object always points to the stored data structure.
- Prepared for multi-platform use: this version of MetaKit can work with data
  files coming from other platforms.  All older datafiles are portable too.
- Restrictions on structural complexity gone, even 1000s of subviews are ok.
  Also, in 16-bit environments, column sizes are no longer limited to 64 Kb.
- Added c4_Strategy class as a way to customize low-level I/O details, etc.
- Property objects (and all derived types) can now be assigned and copied.
- Under MSVC 4.x, the library is specified using "#pragma comment(lib, ...)".
  This means that you only need to put all libraries in the path to use them.
- New documentation about some more advanced topics in the help/api files.

CHANGES

- All definitions which opened a file read-only using the declaration
	c4_Storage storage ("name");
  must be changed - since the second argument no longer has a default - to
	c4_Storage storage ("name", false);
- The c4_View::Get and Set members have been removed, and Define has been
  renamed to "GetAs".  This more accurately describes the new semantics.
  The Get call is superceded by c4_Storage::View.  Set is now View or Store.
- Both c4_Storage::LoadFromStream and StoreToStream now use void* args to
  pass the stream, and cooperate with a "strategy" object for all streaming.
  As a result, streaming can be adapted to use function calls instead of I/O.
- The DOS library is now small-model, mostly to prove that it can be done.
  The STRUCT sample now uses small model and will not accept huge data files.
- The DLL versions of MetaKit 1.3 and 1.4 are not interchangeable, you must
  relink with the appropriate import library and replace the MetaKit DLL's.
- Datafiles written with 1.4 are NOT guaranteed to be readable with 1.3 code.
  But backward compatibility is maintained - 1.4 accepts all existing files.

BUG FIXES

- Storage can now be called with no arguments to create a temporary structure
  which can be sent/received over a data stream.  The old code didn't work.
- Two different bugs were fixed, they both occurred with string properties
  in storage objects which were empty.  Thanks to Alexander S. and Richard C.
- Restructure sometimes affected previously attached views, the DEMO sample
  wrote an incorrect data file because of it.  Fixed, with "s21" test added.
- The known/reported bugs in MetaKit have been resolved, many new tests have
  been set up to verify that they do not (re-)appear in any future releases.
  You should read this as: "if *any* problems show up, *please* report them".

FUTURE

- A new "Universal" version of MetaKit is now undergoing final testing.
  This new product will be available for Dos/Win/Mac/Unix by end November.
  Portability is very high, I intend to run it on anything but your toaster :)
- An up-to-date list of old, current, and planned releases is available at:
	http://purl.net/meta4/metakit/releases
  Note that most releases on this list are available only to registered users.
- In terms of performance, MetaKit is only halfway - more improvements later.
  MetaKit version 1.4 should be pretty fast with many thousands of entries.
- The same holds for modularity - i.e. the ability to only link just a small
  portion of the library if you do not require all the available features.
  The current version still tends to link more code than strictly necessary.


The MetaKit library is extending rapidly. This is possible because it is a
rewrite of code developed earlier in a number of recent projects. I have a
good picture of where I can be heading, because I've already been there :)
But with YOUR input, I can do a better job of prioritizing my to-do lists.

Best regards, Jean-Claude

==============================================================================
mailto:jcw@meta4.nl          http://purl.net/meta4         fax:+31 30 635 2337

